#include <iostream>
#include <algorithm>
#include <map>
#include <vector>
#define pii pair<int,int>
using namespace std;
#define int long long

int n, m, k;

bool check(int x) {
	int tmp=n - max(k * m, x * m);
	return tmp >= x;
}

void solve() {
	cin >> n >> m >> k;
	int tmp = n - m * k;
	int l = 0, r = n, mid;
	while (l < r) {
		mid = (l + r + 1) >> 1;
		if (check(mid))
			l = mid;
		else
			r = mid - 1;
	}
	vector<int> a(n + 1);
	if (max(l, k) == l) {
		int lt = 1, rt = n;
		while (lt < rt) {
			a[lt] = (lt - 1) % l;
			a[rt] = l - 1 - a[lt];
			lt++;
			rt--;
		}
	}
	else {
		for (int i = 1; i <= m * k; i++) {
			a[i] = (i - 1) % k;
		}
		for (int i = m * k + 1; i <= n; i++) {
			int j = i - m * k - 1;
			a[i] = j % l;
		}
	}
	for (int i = 1; i <= n; i++) {
		cout << a[i] << ' ';
	}
	cout << '\n';
}

signed main() {
	ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
	int t;
	cin >> t;
	while (t--) {
		solve();
	}
	return 0;
}
//
//int a[200005], b[200005];
//int n;
//void solve() {
//	cin >> n;
//	int cnt = 0;
//	map<int, int> mp;
//	map<int, int> index;
//	for (int i = 1; i <= n; i++)cin >> a[i];
//	for (int i = 1; i <= n; i++) {
//		cin >> b[i];
//		mp[b[i]] = a[i];
//		index[b[i]] = i;
//		if (b[i] == a[i])
//			cnt++;
//	}
//	if (cnt >= 2 || (cnt == 1 && n % 2 == 0)) {
//		cout << "-1\n";
//		return;
//	}
//	for (int i = 1; i <= n; i++) {
//		if (mp[a[i]] != b[i]) {
//			cout << "-1\n";
//			return;
//		}
//	}
//	int ans = 0;
//	vector<pii> v;
//	for (int i = 1; i <= n; i++) {
//		if (a[i] == b[i] && i != (n + 1) / 2) {
//			ans++;
//			v.push_back({ i,(n + 1) / 2 });
//			index[b[i]] = (n + 1) / 2;
//			index[b[(n + 1) / 2]] = i;
//			swap(a[i], a[(n + 1) / 2]);
//			swap(b[i], b[(n + 1) / 2]);
//		}
//	}
//	for (int i = 1; i <= (n - 1) / 2; i++) {
//		if (a[i] != b[n - i + 1]) {
//			ans++;
//			int x = index[a[i]];
//			v.push_back({ n - i + 1, x });
//			index[b[n - i + 1]] = x;
//			index[b[x]] = n - i + 1;
//			swap(a[n - i + 1], a[x]);
//			swap(b[n - i + 1], b[x]);
//		}
//	}
//	if (ans <= n) {
//		cout << ans << '\n';
//		for (auto x : v) {
//			cout << x.first << ' ' << x.second << '\n';
//		}
//	}
//	else {
//		cout << "-1\n";
//	}
//}

//int a[100005];
//
//int gcd(int x, int y) {
//	return y ? gcd(y, x % y) : x;
//}
//
//void solve() {
//	int n;
//	cin >> n;
//	int minn = 1e18;
//	map<int, int> mp;
//	for (int i = 1; i <= n; i++) {
//		cin >> a[i];
//		minn = min(a[i], minn);
//	}
//	bool ok = false;
//	int cnt = 0;
//	vector<int> q;
//	for (int i = 1; i <= n; i++) {
//		if (a[i] == minn)
//			cnt++;
//		if (a[i] % minn == 0) {
//			q.push_back(a[i] / minn);
//		}
//	}
//	ok |= (cnt >= 2);
//	if (ok) {
//		cout << "Yes\n"; return;
//	}
//	sort(q.begin(), q.end());
//	int cur = q[q.size() - 1];
//	for (int i = q.size() - 1; i >= 1; i--) {
//		cur = gcd(cur, q[i]);
//		if (cur == 1) {
//			ok = true;
//			break;
//		}
//	}
//	if (ok)
//		cout << "Yes\n";
//	else
//		cout << "No\n";
//}


//
//void solve() {
//	int n;
//	cin >> n;
//	if ((n & 1) == 0) {
//		cout << "-1\n";
//		return;
//	}
//	cout << n << ' ';
//	for (int i = 1; i <= n - 1; i++)
//		cout << i << ' ';
//	cout << '\n';
//}